package de.txtippspiel.openliga.connector;

import java.rmi.RemoteException;

import org.apache.axis2.AxisFault;

import de.fh.openliga.ws.SportsdataStub;
import de.fh.openliga.ws.SportsdataStub.ArrayOfGroup;
import de.fh.openliga.ws.SportsdataStub.ArrayOfMatchdata;
import de.fh.openliga.ws.SportsdataStub.GetAvailGroups;
import de.fh.openliga.ws.SportsdataStub.GetAvailGroupsResponse;
import de.fh.openliga.ws.SportsdataStub.GetCurrentGroup;
import de.fh.openliga.ws.SportsdataStub.GetCurrentGroupResponse;
import de.fh.openliga.ws.SportsdataStub.GetMatchdataByGroupLeagueSaison;
import de.fh.openliga.ws.SportsdataStub.GetMatchdataByGroupLeagueSaisonResponse;
import de.fh.openliga.ws.SportsdataStub.GetMatchdataByLeagueSaison;
import de.fh.openliga.ws.SportsdataStub.GetMatchdataByLeagueSaisonResponse;
import de.fh.openliga.ws.SportsdataStub.Group;
import de.fh.openliga.ws.SportsdataStub.Matchdata;

public class OpenLigaConnector {

	private SportsdataStub stub = null;
	private static final String LEAGUE = "bl1";
	
	public OpenLigaConnector() throws AxisFault {
		this.stub = new SportsdataStub();
	}
	
	/**
	 * Diese Funktion liefert alle Matchdaten fuer eine Saison. Das Jahr muss als Parameter ubergeben werden
	 * @param jahr as String
	 * @return Matchdata []
	 * @throws RemoteException
	 */
	public Matchdata[] getFussballDatenByJahr(String jahr) throws RemoteException{
		GetMatchdataByLeagueSaison matchDataParam = new GetMatchdataByLeagueSaison();
		matchDataParam.setLeagueSaison(jahr);
		matchDataParam.setLeagueShortcut(OpenLigaConnector.LEAGUE);
		GetMatchdataByLeagueSaisonResponse matchdataByLeagueSaison = this.stub.getMatchdataByLeagueSaison(matchDataParam );
		ArrayOfMatchdata result = matchdataByLeagueSaison.getGetMatchdataByLeagueSaisonResult();
		Matchdata[] matchdata = result.getMatchdata();
		
		return matchdata;
	}
	
	/**
	 * Diese Funktion liefert alle Matchdaten fuer einen Spieltag einer Saison
	 * @param jahr as String
	 * @param spieltag as Integer
	 * @return Matchdata[]
	 * @throws RemoteException
	 */
	
	public Matchdata[] getSpieltagData(String jahr, Integer spieltag) throws RemoteException{
		GetMatchdataByGroupLeagueSaison params = new GetMatchdataByGroupLeagueSaison();
		params.setLeagueShortcut(OpenLigaConnector.LEAGUE);
		params.setLeagueSaison(jahr);
		params.setGroupOrderID(spieltag);
		GetMatchdataByGroupLeagueSaisonResponse matchdataByGroupLeagueSaison = this.stub.getMatchdataByGroupLeagueSaison(params);
		ArrayOfMatchdata result = matchdataByGroupLeagueSaison.getGetMatchdataByGroupLeagueSaisonResult();
		Matchdata[] matchdata = result.getMatchdata();
		
		return matchdata;
	}
	
	/**
	 * Diese Funktion liefert alle moeglichen Spieltage fuer ein Jahr (1 - 34 als standard)
	 * @param jahr as String
	 * @return Group[] 
	 * @throws RemoteException
	 */
	public Group[] getAlleSpieltageByJahr(String jahr) throws RemoteException{
		GetAvailGroups groupParams = new GetAvailGroups();
		groupParams.setLeagueShortcut(OpenLigaConnector.LEAGUE);
		groupParams.setLeagueSaison(jahr);
		GetAvailGroupsResponse availGroupsResponse = this.stub.getAvailGroups(groupParams);
		ArrayOfGroup result = availGroupsResponse.getGetAvailGroupsResult();
		Group[] groups = result.getGroup();
		
		return groups;
	}
	
	/**
	 * Diese Funktion liefert den aktuellen Spieltag zurueck
	 * @return Group (Spieltag)
	 * @throws RemoteException
	 */
	public Group getAktuellenSpieltag() throws RemoteException{
		GetCurrentGroup params = new GetCurrentGroup();
		params.setLeagueShortcut(OpenLigaConnector.LEAGUE);
		GetCurrentGroupResponse currentGroup = this.stub.getCurrentGroup(params );
		Group result = currentGroup.getGetCurrentGroupResult();
		
		return result;
		
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
